package com.briup.pts.service;

import com.briup.pts.entity.ManagerFenceHouse;
import com.briup.pts.entity.ManagerHurdles;
import com.briup.pts.entity.extend.ManagerHurdlesExt;
import com.github.pagehelper.PageInfo;

import java.util.List;
import java.util.Map;

public interface HurdlesService {

    /**
     * find all max
     * 查询所有的栏圈容量
     *
     * @return list<integer>
     */
    public List<Integer> findAllMax();

    /**
     * find all
     * 查询所有的栏舍信息
     *
     * @return list<manager fence house>
     */
    public List<ManagerFenceHouse> findAll();

    /**
     * find by page
     * 对栏圈数据进行分页展示，并且还可以根据栏圈名称、栏圈容量、所属栏舍、是否
     * 可用进行查询，需要关联查询出栏圈所属的栏舍信息，按照创建时间降序排序
     *
     * @param pageNum  page num
     * @param pageSize page size
     * @param hName    h name
     * @param hMax     h max
     * @param fhName   fh name
     * @param hEnable  h enable
     * @return page info< manager hurdles ext>
     */
    public PageInfo<ManagerHurdlesExt> findByPage(Integer pageNum, Integer pageSize,
                                                  String hName, Integer hMax, String fhName, String hEnable);

    /**
     * save or update
     * 新增或修改栏圈信息
     *
     * @param managerHurdles manager hurdles
     */
    public void saveOrUpdate(ManagerHurdles managerHurdles);

    /**
     * modify status
     * 根据栏圈编号禁用/启用栏圈
     *
     * @param hId     h id
     * @param hEnable h enable
     */
    public void modifyStatus(String hId, String hEnable);

    /**
     * modify status batch
     * 批量禁用/启用栏圈
     *
     * @param idAndStatus id and status
     */
    public void modifyStatusBatch(List<Map<String, String>> idAndStatus);

    /**
     * remove by id
     * 根据栏舍编号删除栏舍信息，
     *
     * @param hId h id
     */
    public void removeById(String hId);

    /**
     * remove batch
     * 批量删除
     *
     * @param ids ids
     */
    public void removeBatch(List<String> ids);

    /**
     * find all enable
     * 查询所有未禁用以及未满的栏圈信息
     *
     * @return list<manager hurdles>
     */
    public List<ManagerHurdlesExt> findAllEnable();
}
